#### FUNCOES ####
import pygame, os, sys
from Mapas import * 
from Funcoes import *
from Niveis import *

pygame.init()
#### FUNCOES MENU ####

def imagens_menu(imagem, posicao, num):
	botao = [pygame.image.load("images" + os.sep + imagem + str(i+1) + ".png") for i in xrange(num)]
	ativo = botao[0] # define o primeiro botao como o que inicia
	tamanho = ativo.get_size() # pega o tamanho do botao
	posicao = posicao # define a posicao
	return botao, ativo, tamanho, posicao


def ativa_som(som, variavel):
	if variavel == False:
		som.play()
		return True


def tela2_menu(imagem, tela):
	variavel = pygame.image.load("images"+ os.sep + imagem)
	tela.blit(variavel, (269,245))
	

def blit_texto(tamanho, texto, cor, posicao, tela):
	fonte = pygame.font.Font(('fonts' + os.sep + 'fonte3.otf'), tamanho)
	texto2 = fonte.render(texto, True, cor)
	return tela.blit(texto2, posicao)


def menu_records(tela):
	arq = open('records.txt', "r")
	arquivo = arq.read().split('|')
	arq.close()
	
	records = []
	for elemento in arquivo:
		records.append(int(elemento))
		
	lista = sorted(records)
	lista.reverse()
	texto1 = "01.  "+ str(lista[0])
	texto2 = "02.  "+ str(lista[1])
	texto3 = "03.  "+ str(lista[2])
	texto4 = "04.  "+ str(lista[3])
	texto5 = "05.  "+ str(lista[4])
	
	blit_texto(30, texto1, (0,0,0), (380,400), tela)
	blit_texto(30, texto2, (0,0,0), (380,430), tela)
	blit_texto(30, texto3, (0,0,0), (380,460), tela)
	blit_texto(30, texto4, (0,0,0), (380,490), tela)
	blit_texto(30, texto5, (0,0,0), (380,520), tela)
	

def atualiza_volume(lista_image):
	if opcoes['volume'] >= 1.0:
		image_volume = lista_image[4]
	if opcoes['volume'] >= 0.7:
		image_volume = lista_image[4]
	if opcoes['volume'] <= 0.6:
		image_volume = lista_image[3]
	if opcoes['volume'] <= 0.4:
		image_volume = lista_image[2]
	if opcoes['volume'] <= 0.3:
		image_volume = lista_image[1]
	if opcoes['volume'] <= 0.2:
		image_volume = lista_image[0]
	return image_volume
	
def records(score, records):
	if score > records[-1]:
			arquivo.append(pontuacao).sort()
			arquivo.pop(-1)
		
	
#### FUNCOES DO JOGO ####

def config_tela(dic_opcoes, dic_tela, level):
	tela = pygame.display.set_mode((800, 600), dic_opcoes['tela'])
	pygame.display.set_caption(level['caption'])
	pygame.display.set_icon(carrega_image(dic_tela['icone']))
	fundo = carrega_image(level['imagem_fundo']).convert()
	return tela, fundo
	
def evento_sair():
	for event in pygame.event.get():
		if event.type == pygame.QUIT:
			sys.exit()
		if event.type == pygame.KEYDOWN:
			if event.key == pygame.K_ESCAPE:
				sys.exit()

def fim_jogo(tela, imagem, posicao):
	press_tecla = False
	theand = carrega_image("fimjogo.jpg").convert()
	tela.blit(gameover, (0,0))
	blit_texto(15, 'Pressione Enter para voltar ao Menu', (255,255,255), (245,508), tela)
	pygame.display.flip()
	while press_tecla == False:
		estado['vidas'] = False
		for event in pygame.event.get():
			if event.type == pygame.QUIT:
				sys.exit()
			if event.type == pygame.KEYDOWN:
				if event.key == pygame.K_ESCAPE:
						sys.exit()
				if event.key == pygame.K_KP_ENTER or event.key == pygame.K_RETURN:
					return True

def game_over(tela):
	if estado['vidas'] == 0:
		gameover = carrega_image("gameover.jpg").convert()
		tela.blit(gameover, (0,0))
		blit_texto(15, 'Pressione Enter para voltar ao Menu', (255,255,255), (245,508), tela)
		pygame.display.flip()
		while estado['vidas']:
			estado['vidas'] = False
			for event in pygame.event.get():
				if event.type == pygame.QUIT:
					sys.exit()
				if event.type == pygame.KEYDOWN:
					if event.key == pygame.K_ESCAPE:
							sys.exit()
					if event.key == pygame.K_KP_ENTER or event.key == pygame.K_RETURN:
						return True

def cursor_mouse(imagem, tela):
	mouse_cursor = carrega_image(imagem).convert_alpha()
	pygame.mouse.set_visible(False)
	x, y = pygame.mouse.get_pos()
	x-= mouse_cursor.get_width() / 4
	y-= mouse_cursor.get_height() / 4
	return tela.blit(mouse_cursor, (x, y))

def carrega_musica(dic, dic_opcoes):
	pygame.mixer.init()
	pygame.mixer.music.load("sounds" + os.sep + dic['musica'])
	pygame.mixer.music.set_volume(dic_opcoes['volume'])
	pygame.mixer.music.play(dic['repeticoes'])


def carrega_som(som):
	return pygame.mixer.Sound('sounds' + os.sep + som)


def atualizar_volume_sons(som):
	return som.set_volume(opcoes['volume'])


def carrega_image(imagem):
	return pygame.image.load('images' + os.sep + imagem)


def blita_blocos(lista, imagem, tela):
	for i in lista:
		return tela.blit(imagem, (i[0],i[1]))

def colisoes(lista):
	# Verificando colisao com o tijolo
	bola_x1 = bola['posicao'][0] + bola['tamanho'][0]
	bola_y1 = bola['posicao'][1] + bola['tamanho'][1]
	
	
	for i in lista:
		if i[1] <= bola_y1 <= i[3] and i[0] < bola['posicao'][0] < i[2]: # Colisao abaixo do tijolo
			bola['velocidade'] = bola['velocidade'][0], -bola['velocidade'][1]
			
			bola_y += 10
			
			if i in sorteados.keys():
				sorteados[i] += 1
				if sorteados[i] == 3:
					lista.remove(i)
			else: lista.remove(i)
			score += 10
			break
		if i[1] <= bola['posicao'][1] <= i[3] and i[0] < bola['posicao'][0] < i[2]: # Colisao acima do tijolo
			bola['velocidade'] = bola['velocidade'][0], -bola['velocidade'][1]
			bola_y = bola['posicao'][1] - 10
			bola['posicao'] = bola['posicao'][0], bola_y
			
			if i in sorteados.keys():
				sorteados[i] += 1
				if sorteados[i] == 3:
					lista.remove(i)
			else: lista.remove(i)
			score += 10
			break
		if i[0] <= bola['posicao'][0] <= i[2] and i[1] < bola['posicao'][1] < i[3]: # Colisao a direita do tijolo
			bola['velocidade'] = -bola['velocidade'][0], bola['velocidade'][1]
			
			bola_x = bola['posicao'][0] + 10
			bola['posicao'] = bola_x, bola['posicao'][1]
			
			if i in sorteados.keys():
				sorteados[i] += 1
				if sorteados[i] == 3:
					lista.remove(i)
			else: lista.remove(i)
			score += 10
			break
		if i[0] <= bola_x1 <= i[2] and i[1] < bola['posicao'][1] < i[3]: # Colisao a esquerda do tijolo
			bola['velocidade'] = -bola['velocidade'][0], bola['velocidade'][1]

			bola_x = bola['posicao'][0] - 10
			bola['posicao'] = bola_x, bola['posicao'][1]

			bola_x -= 10
			if i in sorteados.keys():
				sorteados[i] += 1
				if sorteados[i] == 3:
					lista.remove(i)
			else: lista.remove(i)
			score += 10
			break	


def score():
	fonte = pygame.font.Font(('fonts' + os.sep + 'teste2.ttf'), 30)
	score1 = fonte.render('Score: '+str(score), True, (255, 255, 0))	
	return tela.blit(score1, (630, 570))
	
def verifica_se_ganhou(lista):
	if lista == []: # Verifica se nao tem mais tijolos
		return True
		'''msg = pygame.font.Font(None,70).render("You Win", True, (255,255,255))
		msgrect = msg.get_rect()
		msgrect = msgrect.move(largura_tela / 2 - (msgrect.center[0]), altura_tela / 3)
		tela.blit(msg, msgrect)
		pygame.display.flip()
		while 1:
		
			for event in pygame.event.get():
				if event.type == pygame.QUIT:
					sys.exit()
				if event.type == pygame.KEYDOWN:
					if event.key == pygame.K_ESCAPE:
						sys.exit()'''
	return False
		
	

		

	
	
